
                                          Nesne Yolu
                                              |
             Bus Adresi (ters çevrilir)       |
                        |                     |
                 _______|________   __________|_________
                /                \ /                    \
        dbus://comar.pardus.org.tr/package/wireless_tools


        Nesnenin sunduğu işlem arayüzleri (Interface):

        - org.freedesktop.Introspectable (Standart)
          - Introspect()
        - tr.org.pardus.comar.System.Package
          - postInstall()
          - preRemove()
        - tr.org.pardus.comar.Net.Link
          - setConnection(name, device)
          - setAddress(name, mode, address, ...)
          - ...
        ...


İsimlendirme Kuralları
======================

- Bus adresi, nesne yolu, arayüz ve metod isimlerinin her biri en 
  fazla 255 karakter olabilir.

- Bus adresleri (örnek: tr.org.pardus.commar, :1.35, ...)
  - Her bağlantının bir ya da daha fazla Bus adresi olabilir. ":" 
    ile başlayanlar özgün bağlantı isimleridir.
  - Noktalarla ayrılmış, en az iki kelimeden oluşur. Kelimeler 
    sadece "[A-Z][a-z][0-9]_-" karakterlerini içerebilir.
  - Rakam ve "." ile başlayan Bus adresi olamaz.

- Arayüz isimleri (örnek: tr.org.pardus.comar.Net.Link)
  - Noktalarla ayrılmış, en az iki kelimeden oluşur. Kelimeler 
    sadece "[A-Z][a-z][0-9]_" karakterlerini içerebilir. Bus 
    adresinden farkı, "-" karakteri içermemeleridir.
  - Rakam ve "." ile başlayan arayüz ismi olamaz.

- Üye (method, sinyal) isimleri (örnek: postInstall)
  - "[A-Z][a-z][0-9]_" karakterlerinden oluşan en az bir karakter 
    uzunlukta bir kelime olabilir.
  - "." içeremez
  - Rakam ile başlayamaz.

- Hata isimleri (örnek: org.freedesktop.DBus.Exception)
  - Arayüz isimlendirme kuralları aynen geçerlidir.


COMAR'ın Sunduğu Nesne/Arayüz/Methodlar
=======================================

    / (kök)
        * org.freedesktop.Introspectable
            - Introspect()
        * tr.org.pardus.comar
            - register(app, model, script_file)
            - remove(app)
            - listApplications()
            - listModels()
            - listModelApplications(model)
            - listApplicationModels(app)
        /package
            /package/mysql
                * org.freedesktop.Introspectable
                    - Introspect()
                * tr.org.pardus.comar.System.Package
                    - postInstall(fromVersion, toVersion, ...)
                    - preRemove()
            /package/wireless_tools
                * org.freedesktop.Introspectable
                    - Introspect()
                * tr.org.pardus.comar.System.Package
                    - postInstall(fromVersion, toVersion, ...)
                    - preRemove()
                * tr.org.pardus.comar.Net.Link
                    - setConnection(name, deviceID)
                    - setAddress(name, mode, address, ...)
                    - ...
                * ...
            /package/...


Kök nesne altındaki tr.org.pardus.comar arayüzü, ÇOMAR'a yeni uygulama 
ve uygulama betikleri ekleme, varolanları sorgulama/silme için gerekli 
metodları sunar.

Her nesne standart org.freedesktop.Introspectable arayüzünü sunar. Bu 
arayüzün Introspect() methodu ile, o anki nesne yolunun sunduğu 
arayüzler, alt nesleler ve metodlar sorgulanabilir.

tr.org.pardus.comar.System.Package ve tr.org.pardus.comar.Net.Link 
gibi arayüz isimleri, model.xml'den üretilir. Arayüzün sunduğu method 
ve sinyaller (üyeler), yine model.xml'de tanımlıdır.

register() metodu ile ÇOMAR'a kayıt edilen paketler, /package altına 
eklenir. Kayıt ederken bir model ismi ve o model ile tanımlı işi 
gerçekleştirecek Python betiğinin tam dosya yolu belirtilmelidir:

    register("apache", "System.Package", "/root/apache_package.py")

Yukarıdaki methodun çağrılmasının ardından, eğer System.Package 
arayüzü model.xml'de tanımlı ise, "apache" geçerli bir paket ismi 
ise "apache_package.py", Apache'ye ait ÇOMAR veritabanına eklenir 
ve /package/apache nesnesi altında tr.org.pardus.comar.System.Package 
arayüzü sunulmaya başlanır.
